Demo doc template for the Bioconductor 3.12 workshops at Harvard

Authors: Vince Carey2, Another Author3.
Last modified: 1 Nov, 2020.

Overview

Description

This document is a technical illustration of how workshop documents are authored and rendered. The content of this document will change completely as the workshop content is specified.

Pre-requisites [should be specd for each workshop]

  • Basic knowledge of R syntax
  • Familiarity with Rstudio
  • Basic understanding of modern genomics. For example, the distinction between whole genome sequencing and RNA-seq should be clear.
  • Basic familiarity with the concepts of statistical analysis, such as the definition of the t-test for comparing sample means, the interpretation of histograms. An understanding of experimental design is helpful.
  • Readings:

Participation

Describe how students will be expected to participate in the workshop.

R / Bioconductor packages used

List any R / Bioconductor packages that will be explicitly covered.

Time outline

An example for a 45-minute workshop:

Activity Time
Brief intro to R/Rstudio 10m
Biological context 10m
Packages to be used 10m
Analytical approach to the question 15m
Simple exercises 10m
Review 5m

Workshop goals and objectives

List “big picture” student-centered workshop goals and learning objectives. Learning goals and objectives are related, but not the same thing. These goals and objectives will help some people to decide whether to attend the conference for training purposes, so please make these as precise and accurate as possible.

Learning goals are high-level descriptions of what participants will learn and be able to do after the workshop is over. Learning objectives, on the other hand, describe in very specific and measurable terms specific skills or knowledge attained. The Bloom’s Taxonomy may be a useful framework for defining and describing your goals and objectives, although there are others.

Learning goals

Some examples:

  • describe how to…
  • identify methods for…
  • understand the difference between…

Learning objectives

  • analyze xyz data to produce…
  • create xyz plots
  • evaluate xyz data for artifacts

Workshop Content

Thinking about tables

In the following chunk, we retrieve and render a table produced in Lambert et al. (2018). When rendered in HTML, the table is searchable, thanks to ‘DT::datatable’.

lamtab = biocwk312::lamb_main_20201101
library(DT)
datatable(lamtab)
#> Warning in instance$preRenderHook(instance): It seems your data is too big
#> for client-side DataTables. You may consider server-side processing: https://
#> rstudio.github.io/DT/server.html

Exercise: How many records mention transcription factor ‘YY1’?

Note that each transcription factor is accompanied by an Ensembl identifier. It would be nice to have hyperlinks to Ensembl pages. We can accomplish this by ‘wrapping’ the identifier to create a hyperlink, and then rendering using the ‘escape=FALSE’ setting for ‘datatable’.

usw_pref = "https://uswest.ensembl.org/Homo_sapiens/Gene/Summary?g="
wr_ens = function(x, pref) {
 paste0("<A href='", pref, x, "'>", x, "</A>")
}
head(wr_ens(lamtab$ID, usw_pref)) # test
#> [1] "<A href='https://uswest.ensembl.org/Homo_sapiens/Gene/Summary?g=ENSG00000137203'>ENSG00000137203</A>"
#> [2] "<A href='https://uswest.ensembl.org/Homo_sapiens/Gene/Summary?g=ENSG00000008196'>ENSG00000008196</A>"
#> [3] "<A href='https://uswest.ensembl.org/Homo_sapiens/Gene/Summary?g=ENSG00000087510'>ENSG00000087510</A>"
#> [4] "<A href='https://uswest.ensembl.org/Homo_sapiens/Gene/Summary?g=ENSG00000008197'>ENSG00000008197</A>"
#> [5] "<A href='https://uswest.ensembl.org/Homo_sapiens/Gene/Summary?g=ENSG00000116819'>ENSG00000116819</A>"
#> [6] "<A href='https://uswest.ensembl.org/Homo_sapiens/Gene/Summary?g=ENSG00000117713'>ENSG00000117713</A>"
lamtab2 = lamtab
lamtab2$ID = wr_ens(lamtab2$ID, usw_pref)
datatable(lamtab2, escape=FALSE)
#> Warning in instance$preRenderHook(instance): It seems your data is too big
#> for client-side DataTables. You may consider server-side processing: https://
#> rstudio.github.io/DT/server.html

This is all taken care of for the user of the TFutils package in the function ‘browse_lambert_main()’, which also includes links for PubMed IDs scattered in Lambert’s published Excel table.

Thinking about visualization

Visualization of genomic data is closely linked to annotation. Annotation can be unwieldy and cumbersome to interrogate. We have collected some slices of genomic data and annotation to help with exploration of new approaches to interactive visualization in reports.

Reference positions of transcripts. We have information on a selection of transcripts on chromosome 17 in the vicinity of gene ORMDL3.

head(biocwk312::txdata_near_ormdl3,3)
#> GRanges object with 3 ranges and 4 metadata columns:
#>                   seqnames            ranges strand |           tx_id
#>                      <Rle>         <IRanges>  <Rle> |     <character>
#>   ENSE00003715979       17 37924458-37924570      + | ENST00000620683
#>   ENSE00003732795       17 37977972-37979038      - | ENST00000618047
#>   ENSE00003734132       17 37978470-37979038      - | ENST00000617125
#>                     gene_name         gene_id     type
#>                   <character>     <character> <factor>
#>   ENSE00003715979     TBC1D3D ENSG00000274419     exon
#>   ENSE00003732795     TBC1D3L ENSG00000274512     exon
#>   ENSE00003734132     TBC1D3C ENSG00000278299     exon
#>   -------
#>   seqinfo: 1 sequence from GRCh38 genome

Positions and annotation of GWAS hits. We used the gwascat package to get a copy of the EBI/EMBL GWAS catalog on 1 November 2020, and limited the information to records pertaining to the interval 38-43 Mb on chr17. We also limited the number of metadata fields on the hits.

names(S4Vectors::mcols(biocwk312::hits_near_ormdl3_trunc10))
#> [1] "DATE ADDED TO CATALOG" "PUBMEDID"              "DISEASE/TRAIT"        
#> [4] "REPORTED GENE(S)"      "PVALUE_MLOG"           "value"
head(biocwk312::hits_near_ormdl3_trunc10, 3)
#> GRanges object with 3 ranges and 6 metadata columns:
#>       seqnames    ranges strand | DATE ADDED TO CATALOG  PUBMEDID
#>          <Rle> <IRanges>  <Rle> |                <Date> <numeric>
#>   [1]       17  39766006      * |            2009-06-21  19458352
#>   [2]       17  39965740      * |            2010-10-14  20860503
#>   [3]       17  39905943      * |            2010-10-14  20860503
#>                DISEASE/TRAIT REPORTED GENE(S) PVALUE_MLOG     value
#>                  <character>      <character>   <numeric> <numeric>
#>   [1] Primary biliary chol..            IKZF3     5.09691   5.09691
#>   [2]                 Asthma            GSDMA     8.30103   8.30103
#>   [3]                 Asthma            GSDMB     7.00000   7.00000
#>   -------
#>   seqinfo: 24 sequences from GRCh38 genome

An interactive visualization of GWAS hits and nearby genes.

We’ll use the TnT package along with some functions built for the workshop to visualize GWAS hit locations in the context of transcripts.

# first setup transcripts
trxview = TxTrackFromGRanges(biocwk312::txdata_near_ormdl3, 
      label = "Transcript\n Structure",
      color = "grey2",height = 300)
trxview = reset_tooltip(trxview)
trxview = reset_color(trxview)
trxview = reset_display_label(trxview)
# second setup GWAS hits
hitview = TnT::PinTrack(biocwk312::hits_near_ormdl3_trunc10, color="blue")
# render
TnTGenome(list(hitview, trxview), view.range=GRanges("17", IRanges(39.5e6, 40.5e6)))

Lambert, Samuel A., Arttu Jolma, Laura F. Campitelli, Pratyush K. Das, Yimeng Yin, Mihai Albu, Xiaoting Chen, Jussi Taipale, Timothy R. Hughes, and Matthew T. Weirauch. 2018. “The Human Transcription Factors.” Cell 172 (4): 650–65. https://doi.org/10.1016/j.cell.2018.01.029.


  1. ↩︎

  2. Channing Division of Network Medicine, Brigham and Women’s Hospital↩︎

  3. Another Institution↩︎